#!/bin/bash

if [ -z "$1" ] ; then
    deal_date=$(date -d "3 hour ago" +%Y%m%d)
    max_hour=$(date -d "3 hour ago" +%H)
else
    deal_date=$1
    max_hour=23
fi


LOG_DIR="/home/cys/www/script/logs"
# 日志文件名包含日期，每次执行的日志前添加时间戳
FILE_NAME="insert_aggregates_widget_show_table_data"
LOG_FILE="${LOG_DIR}/${FILE_NAME}_$(date +%Y-%m-%d).log"
mkdir -p "${LOG_DIR}"

# 记录开始时间
echo
echo
echo "[$(date +%Y-%m-%d_%H:%M:%S)] 开始执行 clickhouse 命令" >> "${LOG_FILE}"
echo "开始插入t_tracker_widget_show_aggregates_channel表数据，处理日期：$deal_date，最大小时数：$max_hour" >> "${LOG_FILE}"

echo "获取$deal_date表已有的小时数据..." >> "${LOG_FILE}"

existing_hours_str=$(clickhouse-client --password Keepgo123@cys  -q "select distinct hour from db_cfx.t_tracker_widget_show_aggregates_channel where date='${deal_date}'")
echo "已有小时数据如下：" >> "${LOG_FILE}"
echo "$existing_hours_str" >> "${LOG_FILE}"
# 步骤2：将结果转换为空格分隔的字符串（便于grep检查）
# 处理空结果（若查询无数据，避免后续报错）
if [ -z "$existing_hours_str" ]; then
  existing_hours="";
else
  existing_hours=$(echo "$existing_hours_str" | tr '\n' ' ')  # 换行转空格
fi

# 循环 xxx 从 0 到 max_hour（包含 0 和 max_hour）
for hourNum in $(seq 0 $max_hour); do

   # 用grep -w精确匹配（避免1被10/11等匹配）
  if ! echo "$existing_hours" | grep -qw "$hourNum"; then
      echo "开始插入 hourNum = $hourNum 小时的数据..." >> "${LOG_FILE}"

      # 执行 ClickHouse 插入语句
        clickhouse-client --password Keepgo123@cys  -q "
          insert into db_cfx.t_tracker_widget_show_aggregates_channel
          SELECT
              base_create_date as date,
              base_create_hour  as hour,
          	channel as channel,
              count() as total_records
          FROM db_cfx.t_log_base_data_standard_widget_show
          where base_create_date='${deal_date}' and base_create_hour=${hourNum}
          GROUP BY date,hour,channel;
        "

        # 检查上一条命令是否执行成功
        if [ $? -eq 0 ]; then
          echo "dayNum = $hourNum 小时的数据插入成功" >> "${LOG_FILE}"
        else
          echo "Error: dayNum = $hourNum 小时的数据插入失败" >> "${LOG_FILE}"
          # 若需要失败即退出，取消下面一行的注释
          # exit 1
        fi
        sleep 10

        echo "------------------------"
  fi



done

echo "t_tracker_widget_show_aggregates_channel表数据插入完成..." >> "${LOG_FILE}"